home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / GAS211S2.ZIP / src / gas-211 / libibert / tmpnam.c < prev    next >
C/C++ Source or Header  |  1993-05-30  |  619b  |  40 lines

  1. #include <stdio.h>
  2.  
  3. #ifndef L_tmpnam
  4. #define L_tmpname 100
  5. #endif
  6. #ifndef P_tmpdir
  7. #define P_tmpdir "/usr/tmp"
  8. #endif
  9.  
  10. static char tmpnam_buffer[L_tmpnam];
  11. static int tmpnam_counter;
  12.  
  13. extern int getpid ();
  14.  
  15. char *
  16. tmpnam (s)
  17.      char *s;
  18. {
  19.   int pid = getpid ();
  20.  
  21.   if (s == NULL)
  22.     s = tmpnam_buffer;
  23.  
  24.   /*  Generate the filename and make sure that there isn't one called
  25.       it already.  */
  26.  
  27.   while (1)
  28.     {
  29.       FILE *f;
  30.       sprintf (s, "%s/%s%x.%x", P_tmpdir, "t", pid, tmpnam_counter);
  31.       f = fopen (s, "r");
  32.       if (f == NULL)
  33.     break;
  34.       tmpnam_counter++;
  35.       fclose (f);
  36.     }
  37.  
  38.   return s;
  39. }
  40.